// index.js
Page({
  data: {
    userInfo: {
      avatarUrl: '',
      nickName: ''
    },
    hasUserInfo: false,
    showNicknameInput: false
  },

  onLoad() {
    wx.setNavigationBarColor({
      frontColor: '#ffffff',
      backgroundColor: '#3498db'
    });
    // 检查本地存储的用户信息
    const userInfo = wx.getStorageSync('userInfo')
    if (userInfo && userInfo.nickName && userInfo.avatarUrl) {  // 确保有完整的用户信息
      this.setData({
        userInfo,
        hasUserInfo: true
      })
      getApp().globalData.userInfo = userInfo
    } else {
      // 如果没有完整的用户信息，设置默认状态
      this.setData({
        userInfo: {
          avatarUrl: '',
          nickName: ''
        },
        hasUserInfo: false
      })
      // 清除可能存在的不完整数据
      wx.removeStorageSync('userInfo')
    }
  },

  async onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    
    this.setData({
      'userInfo.avatarUrl': avatarUrl,
      showNicknameInput: true
    })
  },

  onInputNickname(e) {
    const nickName = e.detail.value.trim()
    if (!nickName) {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      })
      return
    }

    // 完成登录流程
    const finalUserInfo = {
      avatarUrl: this.data.userInfo.avatarUrl,
      nickName
    }

    // 更新状态
    this.setData({
      userInfo: finalUserInfo,
      hasUserInfo: true,
      showNicknameInput: false
    })

    // 保存到全局和本地存储
    getApp().globalData.userInfo = finalUserInfo
    wx.setStorageSync('userInfo', finalUserInfo)

    wx.showToast({
      title: `欢迎，${nickName}`,
      icon: 'success',
      duration: 2000
    })
  },

  async handleSharedPlan(planId) {
    const app = getApp()
    const plan = app.globalData.plans.find(p => p.id === planId)
    
    if (!plan) {
      // 如果本地没有这个计划，说明是其他用户分享的
      wx.showModal({
        title: '参与球赛',
        content: '是否要参与本次球赛分组？',
        confirmText: '参与',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            this.joinSharedPlan(planId)
          } else {
            // 用户取消，返回首页
            wx.switchTab({
              url: '/pages/index/index'
            })
          }
        }
      })
    } else {
      // 如果是创建者或已加入的用户，直接进入结果页
      wx.navigateTo({
        url: `/pages/result/result?planId=${planId}`
      })
    }
  },

  async joinSharedPlan(planId) {
    try {
      // 获取用户信息
      const { userInfo } = await wx.getUserProfile({
        desc: '用于显示分组成员信息'
      })

      wx.showLoading({ title: '加入中...' })
      
      const app = getApp()
      const plan = app.globalData.currentPlan || {
        id: planId,
        totalMembers: 0,
        groupCount: 0,
        groupNames: [],
        members: [],
        status: 'waiting'
      }

      // 检查是否已经加入
      if (plan.members.some(m => m.nickName === userInfo.nickName)) {
        wx.hideLoading()
        wx.showToast({
          title: '您已经加入过了',
          icon: 'none'
        })
        wx.navigateTo({
          url: `/pages/result/result?planId=${planId}`
        })
        return
      }

      // 随机分配到一个组
      const groupIndex = Math.floor(Math.random() * plan.groupCount)
      
      // 添加新成员
      const newMember = {
        nickName: userInfo.nickName,
        avatarUrl: userInfo.avatarUrl,
        joinTime: new Date().toISOString(),
        groupIndex
      }
      
      plan.members.push(newMember)

      // 更新全局数据
      app.globalData.currentPlan = plan
      app.globalData.plans = app.globalData.plans.map(p => 
        p.id === planId ? plan : p
      )
      if (!app.globalData.plans.find(p => p.id === planId)) {
        app.globalData.plans.push(plan)
      }
      app.savePlans()

      wx.hideLoading()
      
      // 显示加入成功提示
      wx.showToast({
        title: `已加入${plan.groupNames[groupIndex]}组`,
        icon: 'success',
        duration: 2000,
        success: () => {
          // 延迟跳转，让用户看到提示
          setTimeout(() => {
            wx.navigateTo({
              url: `/pages/result/result?planId=${planId}`
            })
          }, 1500)
        }
      })
    } catch (err) {
      console.error('加入分组失败', err)
      wx.hideLoading()
      wx.showToast({
        title: '加入失败，请重试',
        icon: 'none'
      })
    }
  },

  createGroup() {
    if (!this.data.hasUserInfo) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      return
    }
    wx.navigateTo({
      url: '/pages/create/create'
    })
  },

  joinGroup() {
    if (!this.data.hasUserInfo) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      return
    }
    wx.scanCode({
      success: (res) => {
        const { planId } = this.parseQrCode(res.result)
        if (planId) {
          this.handleSharedPlan(planId)
        } else {
          wx.showToast({
            title: '无效的二维码',
            icon: 'none'
          })
        }
      },
      fail: () => {
        wx.showToast({
          title: '扫码失败，请重试',
          icon: 'none'
        })
      }
    })
  },

  parseQrCode(result) {
    try {
      // 假设二维码内容格式为: basketballgroup://join?planId=xxx
      const url = new URL(result)
      if (url.protocol === 'basketballgroup:' && url.pathname === '/join') {
        return {
          planId: url.searchParams.get('planId')
        }
      }
      return {}
    } catch {
      return {}
    }
  },

  // 添加退出登录方法
  logout() {
    wx.showModal({
      title: '退出登录',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除用户信息
          this.setData({
            userInfo: {
              avatarUrl: '',
              nickName: ''
            },
            hasUserInfo: false,
            showNicknameInput: false  // 重置昵称输入框状态
          })
          // 清除存储
          wx.removeStorageSync('userInfo')
          getApp().globalData.userInfo = null
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            duration: 2000,
            success: () => {
              // 可选：刷新页面或重定向到首页
              this.onLoad()  // 重新加载页面状态
            }
          })
        }
      }
    })
  }
})
